package com.nurt.service;

import com.nurt.entity.UserEntity;

import java.sql.SQLException;

/**
 * 用户服务接口，定义了用户相关操作的方法。
 * 包括获取用户信息、登录、注册和更新用户信息。
 */
public interface UserService {

    /**
     * 根据用户实体获取用户信息。
     * 该方法用于查询数据库，根据传入的用户实体获取相应的用户信息。
     *
     * @param user 用户实体，包含需要查询的用户的标识信息。
     * @return UserEntity 用户实体，包含查询到的用户详细信息。
     * @throws SQLException 如果查询过程中发生数据库访问错误。
     */
    UserEntity getUserInfo(UserEntity user) throws SQLException;

    /**
     * 用户登录验证。
     * 通过比较用户输入的凭证与数据库中的记录来验证用户登录。
     *
     * @param user 用户实体，包含登录所需的用户名和密码等信息。
     * @return UserEntity 登录成功的用户实体，包含用户的详细信息。
     * @throws SQLException 如果登录验证过程中发生数据库访问错误。
     */
    UserEntity login(UserEntity user) throws SQLException;

    /**
     * 注册新用户。
     * 将新用户的信息插入到数据库中，创建一个新的用户账号。
     *
     * @param newUser 新用户实体，包含待注册用户的详细信息。
     * @return int 返回插入操作的影响行数，通常为1表示插入成功。
     * @throws SQLException 如果注册过程中发生数据库访问错误。
     */
    int register(UserEntity newUser) throws SQLException;

    /**
     * 更新用户信息。
     * 根据传入的用户实体，更新数据库中相应用户的资料。
     *
     * @param user 用户实体，包含需要更新的用户信息。
     * @return int 返回更新操作的影响行数，通常为1表示更新成功。
     * @throws SQLException 如果更新过程中发生数据库访问错误。
     */
    int updateUserInfo(UserEntity user) throws SQLException;
}
